import { loginApi,getUserInfoApi,getDetailUserInfoApi } from "@/api/user"
import {getToken,setToken,removeToken} from "@/utils/auth"
export default {
  namespaced: true,
  state:{
    token:getToken(), //页面刷新从cookie中获取token
    userInfo:{} //用户基本资料
  },
  mutations:{
    // 设置token
    setToken(state,data){
      state.token=data //存入state
      setToken(data) // 存入cookie实现持久化
    },
    // 清除token
    removeToken(){
      state.token=null
      removeToken()
    },
    // 设置用户资料
    setUserInfo(state,data){
      state.userInfo=data
    },
    // 清除用户资料
    removeUserInfo(){
      state.userInfo={}
    }
  },
  actions:{
    // 发送登录请求
    async loginAction(context,data){
    let res=  await loginApi(data)
    //将请求成功返回的token存入state.token中
    context.commit('setToken',res)
    },
    // 获取用户资料
    async getUserInfoAction(context){
      let res=  await getUserInfoApi()
      let res2 = await getDetailUserInfoApi(res.userId)
      context.commit('setUserInfo',{...res,...res2})
      },
    // 退出操作
    quitAction(context){
      //清除token 清除用户资料 
      context.commit("removeToken"),
      context.commit('removeUserInfo')
    }
  }
}

